package com.company;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @author 找出一个整数数组中子数组之和的最大值，例如：数组[1, -2, 3, 5, -1]，返回8（因为符合要求的子数组是 [3, 5]）;
 * 数组[1, -2, 3, -8, 5, 1]，返回6（因为符合要求的子数组是 [5, 1]）;
 * 数组[1, -2, 3,-2, 5, 1]，返回7（因为符合要求的子数组是 [3, -2, 5, 1]）
 */
public class test2 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        List<Integer> list = new ArrayList<>();
        System.out.print("请输入数组长度: ");
        int len = scanner.nextInt();
        System.out.println("请输入数组元素: ");
        for (int i = 0; i < len; i++) {
            if (scanner.hasNextInt()) {
                list.add(scanner.nextInt());
            }
        }
        scanner.close();
        int sum=0;
        int max=list.get(0);
        for (Integer integer : list) {
            if(sum < 0){
                sum = integer;
            }
            else{
                sum += integer;
            }
            if (max < sum){
                max = sum;
            }
        }
        System.out.println("连续子数组的最大和为: " + max);
    }

}
